The present invention relates to an improved database access and data manipulation system, and more specifically, the present invention relates to improved database data access and data manipulation within a database having one or more B*Tree indices using a tunable index.
Web server applications are increasingly being used to provide users with access to data stored in databases over the Internet using web browsers. These web server applications simultaneously respond to incoming user requests by providing a plurality of concurrent threads of execution, each of which responds to an individual request, while maintaining per-user web server application access information. Because of the display limitations of web browsers, the results from such requests may be provided to users as an ordered sequence of pages containing an ordered set of responses.
As a result of this environment, database oriented web server applications are required to logically maintain potentially numerous numbers of large result sets through which a user pages to find the information desired. Typically database systems cannot provide a way to easily index through these large result sets while providing acceptable performance for the plurality of concurrent threads of execution. As a result, current systems are unable to adequately respond to large numbers of simultaneous user requests in which users page through the results.
Part of the problem with such a system is that current databases do not support means to efficiently position at a random location within an index associated with the database and access the data indicated by the index at the desired position. These systems do not easily determine the index position associated with a request or provide efficient access to the data associated with the index position determined; and yet, these operations are quite common when users access databases through a web server application using a web browser. While the traditional methods of positioning within large result sets work adequately when operating in a single thread, or small number of threads, environment, in the large number of threads environment common to web server database applications a new approach to maintaining and indexing databases is needed.
Other database systems may have provided some means to randomly position within an index, and return data associated with the position, more efficiently than is typically done in the name brand RDBMS servers, but none of these solutions is tuned for the large number of threads high read to write ratio environment found on the Internet.
In addition to the inherent shortcomings of current database technology, and the associated performance penalties incurred, the performance problem is further exacerbated by the lack of a high-performance programmatic database interface method. Additionally, current database technology lacks the schema support needed to efficiently maintain per-user web server application access information.
In accordance with the present invention, the above and other problems are solved by providing a web server-based database access system for providing improved database data access and data manipulation within a database having one or more B*Tree indices using a tunable index.
One aspect of the present invention is a method for providing multi-threaded database access simultaneous to a plurality of users. The method includes creating one or more searchable indices, the searchable indices each comprise a B*Tree having a plurality of nodes arranged hierarchically from a root node, maintaining a known position for a matching query value within the ordered index using the first key count and the one or more second key counts, and searching the one or more searchable indices using the first key count and the one or more second key counts. The plurality of nodes have a modify counter for providing an indication of how many times the node has been altered, a number of keys indicator, a first key count and node pointer pair, one or more second key count and node pointer pairs, and one or more keys. The number of one or more keys and the number of one or more second key count and node pointer pairs is equal to the number provided in the number of keys indicator.
Another aspect of the present invention is a multi-threaded database access system for providing simultaneous access to a database to a plurality of users. the multi-threaded database access system has a user interface module for receiving incoming queries from users and formatting and returning result data to users, a plurality of searchable indices, aquery searching module for locating entries in one or more of the searchable indices satisfying a match condition; and an index modification module for adding, deleting, and modifying entries within the database and corresponding entries in the plurality of searchable indices. The searchable indices each comprise a B*Tree having a plurality of nodes arranged hierarchically from a root node. The plurality of nodes have a modify counter for providing an indication of how many times the node has been altered, a number of keys indicator, a first key count and node pointer pair, one or more second key count and node pointer pairs, and one or more keys. The number of one or more keys and the number of one or more second key count and node pointer pairs is equal to the number provided in the number of keys indicator.
The invention may be implemented as a computer process, a computing system or as an article of manufacture such as a computer program product. The computer program product may be a computer storage medium readable by a computer system and encoding a computer program of instructions for executing a computer process. The computer program product may also be a propagated signal on a carrier readable by a computing system and encoding a computer program of instructions for executing a computer process.
The great utility of the invention is that the present invention relates to improved database data access and data manipulation within a database having one or more B*Tree indices using a tunable index. These and various other features as well as advantages, which characterize the present invention, will be apparent from a reading of the following detailed description and a review of the associated drawings.